home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9308 / DOS62.CD < prev    next >
Text File  |  1995-04-19  |  10KB  |  215 lines

  1.           @VTessék választani!@N
  2.  
  3.           @VInteraktív batch programozás MS DOS 6.0 alatt@N
  4.  
  5.           Sokan  és  sokat  gyentöltük a Microsoftot -- eddig hiába --
  6.           amiatt,  hogy  nem  támogatja  kellôen  az  interaktív batch
  7.           programozást.   Az   MS   DOS   6.0  megjelenésével  némileg
  8.           megváltozott  a  helyzet.  Ugyan  még  nem  éri  el  a külsô
  9.           fejlesztôk  által  készített  programok színvonalát -- fôleg
  10.           kényelemben --, de végre megmozdult a tohonya óriás.
  11.  
  12.  
  13.           Az  MS  DOS  6.0 parancsai között találhatunk egy CHOICE.COM
  14.           nevû  apróságot. A program -- talán nem véletlenül -- erôsen
  15.           emlékeztet  a Norton Utilities csomag néhai ASK programjára.
  16.           Segítségével   a   batch   program   üzenetet   írhat  ki  a
  17.           felhasználónak,    jelezve    a   válaszadásra   használható
  18.           billentyûket,  s  megadott alapértelmezésekkel is operálhat.
  19.           A  válaszként  lenyomott  billentyûnek  megfelelô ERRORLEVEL
  20.           érték  beállításával fejezi be mûködését a program. Az már a
  21.           batch  file  készítôjének  a  gondja,  hogyan  értékeli ki a
  22.           válaszokat  s  vezeti tovább a program mûködését a válasznak
  23.           megfelelôen.
  24.  
  25.           A  CHOICE  parancs  általánosított parancssora (szintaxisa):
  26.           CHOICE [/C[:]gombok] [/N] [/S] [/T[:]c,nn] [üzenetszöveg]
  27.  
  28.  
  29.           Ha  ezt  elfelejtenénk,  segítséget kérhetünk a CHOICE-tól a
  30.           DOS-ban  megszokott  /?  kapcsolóval.  A  segítô információt
  31.           hibás paraméterezés esetén is kiírja a program.
  32.           A   szabadon   választható   vagy   elhagyható   elemeket  a
  33.           DOS-kézikönyvek   megszokott   jelölésmódjával   [és  @N  jelek
  34.           közé   tettem.   Ha   elhagyjuk   az  adott  paramétert,  az
  35.           alapértelmezés  lép  életbe.  Minden  más  kísérô  paraméter
  36.           nélkül  például  a CHOICE válaszként az y, Y, n és N betûket
  37.           fogadja  el  (a  kis- és nagybetûk között alaphelyzetben nem
  38.           tesz   különbséget).  Az  egyes  kapcsolók  tetszés  szerint
  39.           felcserélhetôk,    nem    kell    betartani    a   szintaxis
  40.           ismertetésekor  használt  ábécésorrendet.  Vegyük  sorra  az
  41.           egyes parancssori elemek hatását a programocska mûködésére.
  42.  
  43.           @V/C:gombok@N    vagy   @V/Cgombok@N   --   válaszgombok   megadása.
  44.           Azokat  a  billentyûket  adhatjuk  meg,  melyek lenyomását a
  45.           program   válaszként   elfogadja.   Az   egyes  karaktereket
  46.           folyamatosan,   elválasztó  jelek,  karakterek  nélkül  kell
  47.           beírni.   A   kettôspont   elhagyható,  csak  a  batch  file
  48.           olvashatóságát  javítja.  A /C mellett megadott karakterek a
  49.           képernyôn   a(z   esetleg)   megadott  üzenetszöveg  mögött,
  50.           közrezáró    [és    jelek   között,   egymástól   vesszôvel
  51.           elválasztva jelennek meg, végül egy kérdôjel következik.
  52.  
  53.           Ha  nem  akarjuk megjeleníteni a választható válaszgombokat,
  54.           adjuk  meg a /N kapcsolót (lásd alább). A /C nélkül meghívva
  55.           a  CHOICE-t  egy  ""[Y,N@N?"  dobozka  jelenik meg a képernyôn.
  56.           Ha  lehetséges  válaszként  elég  ez  a  két  karakter, a /C
  57.           kapcsoló el is hagyható.
  58.  
  59.           @V/N@N   --   a  prompt  elrejtése.  A  /N  hatására  a  program
  60.           megjeleníti  a megadott üzenetet -- ha van --, a promptot az
  61.           elfogadott   válaszbillentyûkkel   azonban  már  nem.  A  /C
  62.           mellett   megadott,   illetve   annak  elhagyása  esetén  az
  63.           alapértelmezett  válaszbillentyûk  -- bár nem jelennek meg a
  64.           képernyôn -- továbbra is érvényben maradnak.
  65.  
  66.           @V/S@N    --    kisbetû-nagybetû    nem    ugyanaz.   A   CHOICE
  67.           alaphelyzetben     nem    különbözteti    meg    a    válasz
  68.           kiértékelésekor   a   kis-   és  nagybetûket.  Ez  általában
  69.           elônyös,  hiszen így  nem függünk  a [CapsLock] és a [Shift]
  70.           pillanatnyi  állapotától.  De  vannak esetek, amikor érdemes
  71.           lehet  megkülönböztetni a kis- és nagybetûket. Ilyenkor kell
  72.           megadni a CHOICE-nak a /S kapcsolót.
  73.  
  74.           @V/T:karakter,idô@N         vagy        @V/Tkarakter,idô@N        --
  75.           alapválasztás,   idôkorláttal.   A   beérkezô  válasznak  is
  76.           adhatunk  egy  alapértéket (default) a /T kapcsolóval, amely
  77.           életbe  lép,  ha  a  megadott ideig nem válaszol a gép elôtt
  78.           ülô   felhasználó.   A   várakozási  idôt,  amit  a  default
  79.           karaktertôl   vesszôvel   elválasztva,  másodpercekben  kell
  80.           megadni,  0--99  közötti  számmal  adhatjuk  meg.  0  esetén
  81.           azonnal  a  default  érték lép életbe. Ezt olyankor célszerû
  82.           alkalmazni,   ha  egy,  a  CHOICE  segítségével  létrehozott
  83.           interaktív   elágazást  átmenetileg  ki  akarunk  iktatni  a
  84.           programból,   de   az   adott  sorok  elé  nem  akarunk  REM
  85.           parancsokat   írni,   és   törölni  sem  akarjuk  azokat.  A
  86.           kettôspont  itt  is  elhagyható,  csak a jobb olvashatóságot
  87.           szolgálja.
  88.  
  89.           Vigyázzunk,  hogy csak olyan válaszkaraktert adjunk meg a /T
  90.           mellett,  amit  a  /C  mellett használtunk -- fôleg, ha a /S
  91.           kapcsoló  alkalmazásával  a  kis-  és  nagybetûk  között  is
  92.           különbséget  tétetünk  a  programmal. Ha a parancssorban nem
  93.           szerepel  /C  kapcsoló, akkor a /T mellett csak Y, y, N vagy
  94.           n állhat.
  95.  
  96.           A   /T   kapcsoló   használatakor   nem  látszik,  mennyi  a
  97.           várakozási  idô,  s  az  alapértelmezést  sem jeleníti meg a
  98.           program,    ellentétben    a    CONFIG.SYS-ben   használatos
  99.           MENUDEFAULT    paranccsal.    Ott    ugyanis    látszik   az
  100.           alapértelmezett  válasz,  s  folyamatosan  pereg a hátralevô
  101.           válaszidô  kiírása.  További  különbség,  hogy  a /T mellett
  102.           mindkét  kísérô  paramétert  meg  kell  adnunk,  egyiket sem
  103.           hagyhatjuk el.
  104.  
  105.  
  106.            @VÜzenetszöveg@N
  107.  
  108.           A  kapcsolókon kívül egy üzenetszöveget is megadhatunk, amit
  109.           a  program kiír a válaszbillentyûket felsoroló prompt elôtt.
  110.           Csupán  néhány megkötés van az üzenetszöveggel kapcsolatban.
  111.           Egyrészt  a  DOS  által  elfogadott  parancssor-hossz jelent
  112.           limitet   (maximum   127  karakter),  másrészt  az,  hogy  a
  113.           képernyô  --  eltekintve  a  speciális  üzemmmódoktól  -- 80
  114.           karakteres  sorokból  épül  fel.  Ennél hosszabb szöveget is
  115.           beírhatunk,  de  ez  célszerûtlen.  Ha  a  szövegben  a  DOS
  116.           kapcsolókaraktereként  használt  / jel is szerepel, akkor az
  117.           üzenetszöveget  idézôjelek  közé kell zárni. Mivel a program
  118.           a   válaszbillentyûket   megadó   promptot   közvetlenül  az
  119.           üzenetszöveg  mögött  írja ki, a jobb olvashatóság érdekében
  120.           az üzenetszöveg végére tegyünk legalább egy üres szóközt.
  121.  
  122.  
  123.            @VKiértékelés@N
  124.  
  125.           A   program   elemzi   a   felhasználó  válaszát.  Ha  olyan
  126.           billentyût  nyomunk  le, ami nem szerepel a /C mögött, akkor
  127.           sípol,   majd   tovább   várakozik.   Az  elfogadási  listán
  128.           szereplô  gombok  valamelyikének  lenyomásakor  a program az
  129.           ERRORLEVEL  értékének megfelelô beállításával ad információt
  130.           a  batch  file  további  része  számára  a  választásról.  A
  131.           beállított  érték  hiba  esetén  255  lesz,  ha  pedig  a /C
  132.           mellett  megadott  gombok  valamelyikét  nyomtuk  meg, akkor
  133.           annak  a  felsorolásbeli  sorszámát kapja meg az ERRORLEVEL.
  134.           Mivel  [Ctrl  C]  vagy  [Ctrl Break] kombinációval is ki lehet
  135.           lépni  a  DOS  programok  többségébôl,  a  fejlesztôk erre a
  136.           ""hagyományra"  építve  azt  találták  ki,  hogy  ilyenkor 0
  137.           értéket ad a program az ERRORLEVEL-nek.
  138.  
  139.           A  kiértékelés  és  a  program  további elágaztatása a batch
  140.           programok     általános     szabályainak    megfelelôen    a
  141.           feltételvizsgáló   IF  paranccsal  történik.  Az  ERRORLEVEL
  142.           értékét  a  nagyobb  értékektôl a kisebbek felé haladva kell
  143.           vizsgálni.
  144.  
  145.           @KNagy Gábor@N
  146.  
  147.  
  148.           @VPéldaprogram: MELYIKET.BAT@N
  149.  
  150.           @@ECHO OFF
  151.           REM MELYIKET.BAT
  152.           REM Példák a CHOICE használatára
  153.           REM *******************************
  154.  
  155.           :eleje
  156.           REM **** Fômenü ****
  157.           CLS
  158.           ECHO A rendelkezésre álló programtípusok:
  159.           ECHO - S - Szövegszerkesztô
  160.           ECHO - A - Adatbáziskezelô
  161.           ECHO - W - Windows
  162.           ECHO - V - Választás nélkül vége
  163.           CHOICE /C:sawcv Milyen programot futtassunk
  164.           IF ERRORLEVEL 255 GOTO hiba
  165.           IF ERRORLEVEL 4 GOTO kilep
  166.           IF ERRORLEVEL 3 GOTO windows
  167.           IF ERRORLEVEL 2 GOTO adatbazis
  168.           IF ERRORLEVEL 1 GOTO wordproc
  169.           IF ERRORLEVEL 0 GOTO kilep
  170.  
  171.           :windows
  172.           REM Innen indul a Windows vagy kedvenc Windows alatti
  173.           REM programunk a WINPRG.BAT meghívásával
  174.           REM
  175.           CALL winprg
  176.           IF NOT ERRORLEVEL 0 GOTO hiba
  177.           GOTO eleje
  178.  
  179.           :adatbazis
  180.           REM itt egy almenü jön
  181.           CLS
  182.           ECHO Adatbáziskezelés
  183.           ECHO - D - dBASE III Plus indítása
  184.           ECHO - C - Clipperes fejlesztés
  185.           ECHO - V - Vissza a fômenübe
  186.           ECHO Fél perc várakozás után visszatérek a fômenübe!
  187.           CHOICE /C:dcv /T:v,30 Melyiket csináljuk
  188.           IF ERRORLEVEL 255 GOTO hiba
  189.           IF ERRORLEVEL 3 GOTO eleje
  190.           IF ERRORLEVEL 2 GOTO clipper
  191.           IF ERRORLEVEL 1 GOTO dbase
  192.           IF ERRORLEVEL 0 GOTO kilep
  193.  
  194.           :clipper
  195.           REM Innen indítjuk a Clippert hívó CLIP.BAT-ot
  196.           CALL clipp
  197.           IF NOT ERRORLEVEL 0 GOTO hiba
  198.           GOTO eleje
  199.  
  200.           :dbase
  201.           REM Innen indítjuk a dBASE III-at hívó DB3.BAT-ot
  202.           CALL db3
  203.           IF NOT ERRORLEVEL 0 GOTO hiba
  204.           GOTO eleje
  205.  
  206.           :wordproc
  207.           REM Innen indítjuk a szövegszerkesztôt:
  208.           CALL editor
  209.           IF NOT ERRORLEVEL 0 GOTO hiba
  210.           GOTO eleje
  211.  
  212.           :hiba
  213.           REM ide kerülnek a hibakezelô rutinok
  214.  
  215.           :kilep